    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package classesMiolo;

import java.util.InputMismatchException;

/**
 *
 * @author thiago
 */
public class Validador {
    
    private Validador(){
        ;//Vazio intencional
    }
    
    public static boolean validaTamMinimo(int tamanho, String s){
        
        return (s.length() >= tamanho);
        
    }
    
    public static boolean validaAlfanumerico(String s){
        
        String ss = s.toLowerCase();
        char[] ar = ss.toCharArray();
        
        for(int i = 0; i < ar.length; i++){
            if(!Character.isAlphabetic(ar[i]) && !Character.isWhitespace(ar[i]) && !Character.isDigit(ar[i])) {
                return false;
            }
        }
        return true;        
        
    }
    
    public static boolean validaNome(String s){
        String ss = s.toLowerCase();
        char[] ar = ss.toCharArray();
        
        for(int i = 0; i < ar.length; i++){
            if(!Character.isAlphabetic(ar[i]) && !Character.isWhitespace(ar[i])) {
                return false;
            }
        }
        return true;
    }
    
    public static boolean validaNumero(String s){
        char[] ar = s.toCharArray();
        
        for(int i = 0; i < ar.length; i++){
            if(!Character.isDigit(ar[i])) {
                return false;
            }
        }
        return true;
    }
    
    public static boolean validaDataNascimento(String[] nascimento){
        
        if(nascimento[0].length() != 2 || nascimento[1].length() != 2 || nascimento[2].length() != 4) {
            return false;
        }
        
        if(!validaNumero(nascimento[0]) || !validaNumero(nascimento[1]) || !validaNumero(nascimento[2])){
            return false;
        }
        
        //Valida Dia
        
        int dia = Integer.parseInt(nascimento[0]);
        int mes = Integer.parseInt(nascimento[1]);
       
        return ( (dia >= 1 && dia <= 31) && (mes >= 1 && mes <= 12) );
    }
    
    public static boolean validaCPF(String CPF) {
// considera-se erro CPF's formados por uma sequencia de numeros iguais
        if (CPF.equals("00000000000") || CPF.equals("11111111111")
                || CPF.equals("22222222222") || CPF.equals("33333333333")
                || CPF.equals("44444444444") || CPF.equals("55555555555")
                || CPF.equals("66666666666") || CPF.equals("77777777777")
                || CPF.equals("88888888888") || CPF.equals("99999999999")
                || (CPF.length() != 11)) {
            return (false);
        }

        char dig10, dig11;
        int sm, i, r, num, peso;

// "try" - protege o codigo para eventuais erros de conversao de tipo (int)
        try {
// Calculo do 1o. Digito Verificador
            sm = 0;
            peso = 10;
            for (i = 0; i < 9; i++) {
// converte o i-esimo caractere do CPF em um numero:
// por exemplo, transforma o caractere '0' no inteiro 0        
// (48 eh a posicao de '0' na tabela ASCII)        
                num = (int) (CPF.charAt(i) - 48);
                sm = sm + (num * peso);
                peso = peso - 1;
            }

            r = 11 - (sm % 11);
            if ((r == 10) || (r == 11)) {
                dig10 = '0';
            } else {
                dig10 = (char) (r + 48); // converte no respectivo caractere numerico
            }
// Calculo do 2o. Digito Verificador
            sm = 0;
            peso = 11;
            for (i = 0; i < 10; i++) {
                num = (int) (CPF.charAt(i) - 48);
                sm = sm + (num * peso);
                peso = peso - 1;
            }

            r = 11 - (sm % 11);
            if ((r == 10) || (r == 11)) {
                dig11 = '0';
            } else {
                dig11 = (char) (r + 48);
            }

// Verifica se os digitos calculados conferem com os digitos informados.
            if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10))) {
                return (true);
            } else {
                return (false);
            }
        } catch (InputMismatchException erro) {
            return (false);
        }
    }

    
}
